﻿
namespace Bridge.Base.Constructs
{
    /// <summary>
    /// Class for implementing a Character.
    /// </summary>
    public abstract class Character : ChangableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="Character"/> class.
        /// </summary>
        public Character()
        {
        }

        /// <summary>
        /// Gets or sets the name of the character.
        /// </summary>
        public string Name
        {
            get { return mName; }
            set { CheckPropertyChanged<string>("Name", ref mName, ref value); }
        }

        /// <summary>
        /// Gets or sets the maximum hit points of the character.
        /// </summary>
        public int MaximumHitPoints
        {
            get { return mMaximumHitPoints; }
            set { CheckPropertyChanged<int>("MaxHP", ref mMaximumHitPoints, ref value); }
        }

        /// <summary>
        /// Gets or sets the current hit points of the character.
        /// </summary>
        public int CurrentHitPoints
        {
            get { return mCurrentHitPoints; }
            set { CheckPropertyChanged<int>("CurrentHP", ref mCurrentHitPoints, ref value); }
        }

        /// <summary>
        /// Gets the type of the character. This should be unique between Characters.
        /// </summary>
        public abstract string CharacterType { get; }

        private string mName = "";
        private int mMaximumHitPoints = 0;
        private int mCurrentHitPoints = 0;
    }
}
